文章目录
  1. 1. 二、Ribbon
  2. 2. 三、Hystrix
  3. 3. 四、Feign

二、Ribbon

基于HTTP和TCP的负载均衡工具,实现客户端负载均衡。与服务端负载均衡不同的是,客户端负载均衡中,所有客户端节点维护着自己要访问的服务端清单,服务端清单来自注册中心。

基本使用

  • 服务提供者启动多个服务实例,注册到一个或者多个关联的注册中心
  • 消费者调用被@LoadBalanced注解过的RestTemplate

源码分析

  • LoadBalancerClient(客户端负载均衡器)中应该包含的能力:
    • choose:挑选对应服务的实例
    • execute:执行请求
    • reconstructURI:拼接URI
  • LoadBalancerAutoConfiguration自动化配置类:
    • 创建LoadBalancerInterceptor的Bean,用于拦截请求
    • 创建RestTemplateCustomizer的Bean,用于给RestTemplate增加拦截器
    • 维护一个被@LoadBalanced注解修饰的RestTemplate对象列表
  • 负载均衡规则实现:
    • RandomRule:随机选取
    • RoundRobinRule: 使用了一个AtomicInteger实现线性轮询
    • RetryRule: 具备重试机制
    • ZoneAvoidanceRule:默认的负载均衡策略,两次过滤(先过滤清单,再轮询选择),先选取Zone,再使用Zone中指定的过滤器

三、Hystrix

当某个服务单元发生故障时,通过断路器故障监控,向调用方返回错误响应。

四、Feign

整合了Ribbon与Hystrix,并且提供了声明式的Web服务客户端定义方式。

文章目录
  1. 1. 二、Ribbon
  2. 2. 三、Hystrix
  3. 3. 四、Feign